function func(num) {
        return function () {
          console.log(num) // 7(95行处调用过：打印1) -> 11(127行处调用过：打印3) -> 12(122行处调用过：打印4)
        }
      }

      setTimeout(func(1)) // 第 7     微任务1

      async function async3() {
        await async4()
        console.log(8) // 第 4     
      }

      async function async4() {
        console.log(5) // 第 1
      }

      async3() // 同步任务1

      function func2() {
        console.log(2) // 第 8

        async function async1() {
          await async2()
          console.log(9) // 第 10
        }

        async function async2() {
          console.log(5) // 第 9
        }

        async1() 

        setTimeout(func(4)) // 第 12
      }

      setTimeout(func2) // 微任务2

      setTimeout(func(3)) // 第 11  微任务3

      new Promise(resolve => { 
        console.log('Promise') // 第 2 同步任务2
        resolve()  // 虽然是同步代码但无任何打印
      })
        .then(() => console.log(6)) // 第 5  微任务4 
        .then(() => console.log(7)) // 第 6  微任务5

      console.log(0) // 第 3 同步任务3